/************************************************************************
                        Request.h.h - Copyright asaf
*/
#ifndef REQUEST_H
#define REQUEST_H
#include "Object.h"
#include <string>
using namespace std;
//enum representing possible request types
enum REQUEST_MESSAGE_TYPE{
		LOGIN=101,//a login request
		LOGOUT=102,//a logout request
		ADD_PERSON=103,//request to add a new person
		ADD_COURSE=104,//request to add a new course
		DELETE_PERSON=105,//request to delete a person
		DELETE_COURSE=106,//request to delete a course
		EDIT_PERSON=107,//request to edit a student
		REGISTER_STUDENT_COURSE=108,//request to register a student to a course
		ASSIGN_COURSE_LECTURER=109,//request to assign a lecturer to a course-lecture
		GET_ALL_COURSE=110,//report: get all the courses 
		SET_STUDENT_COURSE_COMPLETED=18,
		GET_COURSE_DATA=111,//report:get a specific course data
		GET_PERSON_DATA=112,//report:get a specific person data 
		GET_COURSES_FOR_SEMESTER=113,
		ADD_COURSE_PREREQUISITE=114,
};


/**
  * class Request
  Request is used to pass basic requests, not needing any parameters,
  only request type.
  */
class Request : virtual public Object
{
public:
		// Constructors/Destructors
		Request (const int type);
		virtual ~Request ( );
		//exists only for polimorphizm
		virtual string getParameter(string column)const{return "";}
		//exists only for polimorphizm
		virtual void addParameter(string column,string data){;}
		//setters/getters
		int const getRequestType()const{return m_requestType;}
		void setRequestType(const int type){m_requestType=type;}
protected:
private:
	Request(){};
	Request(const Request &);
	Request operator=(const Request &rhs);
	int m_requestType;
};

#endif // REQUEST_H
